package com.example.zhidao.model.po;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Component;

import java.util.Date;

@Data
@Component
public class User {
    private String id;
    private String username;
//    @JsonIgnore//不让该字段进行读取与写入
//@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)//允许该字段修改但不允许访问，如果参数换成JsonProperty.Access.READ_ONLY，则是只读不写
    private String password;
    private String sex;
    private String img;
    private String email;
    private int type;
    private int concern;//关注数
    private int fan;
    private int collection;
    private int publish;
    @DateTimeFormat(pattern = "yyyy-dd HH:mm:ss") // 从前端接收数据时，需要进行的转换
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") // 返回到前端时，需要进行的转换
    private Date createtime;
//    @JsonIgnore
    private String token;
}



//``在以上代码中，我们使用了`@JsonProperty` 注解对 `newPassword` 进行了注解，`access` 属性的值为 `JsonProperty.Access.WRITE_ONLY`。
// 这意味着在反序列化过程中，`newPassword` 属性会被包含在 JSON 数据中并能够进行修改，但是在序列化过程中，`newPassword` 会被忽略。这样就允许了该属性的修改。
// 举个例子，在执行更新操作时，我们可以先使用 `@JsonIgnore` 注解隐藏掉 `password` 属性，而在请求参数中传入 `newPassword` 属性，
//这就可以修改被 `@JsonIgnore` 注解过的属性，同时也保护了原本不需要被暴露出去的敏感信息。需要注意的是，使用 `@JsonProperty` 注解时还可以指其
// 他的属性值，如 `READ_ONLY`（只在序列化过程中包含，反序列化时略）和 `READ_WRITE`（既在序列化过程中包含，又在反序列化过程中包含）。具体可以根据实际需求
// 进行选择。